﻿using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using ST.Buz.Base.Entity;
using ST.Buz.Base.Enums;

namespace ST.Buz.Base.Mapping
{
	public partial class Map_Sys_User : IEntityTypeConfiguration<Sys_User>
	{
		public void Config(EntityTypeBuilder<Sys_User> builder)
		{
			builder.HasIndex(m => new { m.Code })
				.HasName("IX_Sys_User_Code")
				.IsUnique(true)
				.IsClustered(false);

			builder.HasIndex(m => new { m.OrgID })
				.HasName("IX_Sys_User_OrgID")
				.IsClustered(false);

			builder.Property(e => e.ID);

			builder.Property(e => e.Code)
				.IsRequired(true)
				.IsUnicode(false);

			builder.Property(e => e.PYCode)
				.IsUnicode(false);

			builder.Property(e => e.IDCardNo)
				.IsUnicode(false);

			builder.Property(e => e.Passwd)
				.IsUnicode(false);

			builder.Property(e => e.PasswdSalt)
				.IsUnicode(false);

			builder.Property(e => e.Phone)
				.IsUnicode(false);

			builder.Property(e => e.Mobile)
				.IsUnicode(false);

			builder.Property(e => e.Email)
				.IsUnicode(false);

			builder.Property(e => e.ZipCode)
				.IsUnicode(false);

			builder.Property(e => e.AvatarUrl)
				.IsUnicode(false);

			builder.Property(e => e.QQ)
				.IsUnicode(false);

			builder.Property(e => e.WX)
				.IsUnicode(false);

			builder.Property(e => e.AddDate)
				.HasDefaultValueSql("(getdate())")
				.ValueGeneratedNever();

			builder.Property(e => e.AddManID)
				.HasDefaultValueSql("((0))")
				.ValueGeneratedNever();

			builder.Property(e => e.RoleType)
				.HasDefaultValueSql("((" + (int)UserRoleType.系统用户 + "))")
				.ValueGeneratedNever();

			builder.Property(e => e.UserType)
				.HasDefaultValueSql("((" + (int)UserType.普通会员 + "))")
				.ValueGeneratedNever();

			builder.Property(e => e.LastLoginIP)
				.IsUnicode(false);

			builder.Property(e => e.LastLoginDate);

			builder.Property(e => e.StateNow)
				.HasDefaultValueSql("((" + (int)UserState.正常 + "))")
				.ValueGeneratedNever();

			builder.Property(e => e.Gender)
				.HasDefaultValueSql("((" + (int)Gender.未知 + "))")
				.ValueGeneratedNever();
		}
	}
}
